// 引入 napi 相关宏
use napi_derive_ohos::napi;

// 引入 GZIP 编码器及默认压缩等级
use flate2::{write::GzEncoder, Compression};
use std::io::prelude::*;

/// 压缩输入的字节数据
/// # 参数
/// - `input`: 需要压缩的原始数据（字节数组）
///
/// # 返回
/// - `Vec<u8>`: 压缩后的字节数组
fn compress_data(input: &[u8]) -> Vec<u8> {
    let mut encoder = GzEncoder::new(Vec::new(), Compression::default());
    encoder.write_all(input).unwrap();
    encoder.finish().unwrap()
}

/// 暴露给 HarmonyOS 使用的接口函数，
/// 接收字符串，返回 GZIP 压缩后的字节数组。
///
/// # 参数
/// - `input`: 字符串数据（如 "Hello, Rust!"）
///
/// # 返回
/// - `Vec<u8>`: 压缩后的数据（供 JS 或其他前端处理）
///
/// # 示例
/// ```
/// let result = compress_string("你好");
/// ```
#[napi]
pub fn compress_string(input: String) -> Vec<u8> {
    compress_data(input.as_bytes())
}


